home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / KEYBOARD.SWG / 0033_Complete Scan Codes.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-18  |  27KB  |  506 lines

  1.  
  2. UNIT HTkb;
  3.  
  4. { Complete set of all keyboard scan codes.
  5.   Part of the Heartware Toolkit v2.00 (HTkb.PAS) for Turbo Pascal.
  6.   Author: Jose Almeida. P.O.Box 4185. 1504 Lisboa Codex. Portugal.
  7.           I can also be reached at RIME network, site ->TIB or #5314.
  8.   Feel completely free to use this source code in any way you want, and, if
  9.   you do, please don't forget to mention my name, and, give me and Swag the
  10.   proper credits. }
  11.  
  12. INTERFACE
  13.  
  14. const
  15.  
  16. { letters ······························································ }
  17.  
  18.   kb_AA                  = $1E61;     { a                                }
  19.   kb_A                   = $1E41;     { A                                }
  20.   kb_CtrlA               = $1E01;     { ^A                               }
  21.                                       { SOH - Start Of Header            }
  22.   kb_AltA                = $1E00;     { ALT A                            }
  23.  
  24.   kb_BB                  = $3062;     { b                                }
  25.   kb_B                   = $3042;     { B                                }
  26.   kb_CtrlB               = $3002;     { ^B                               }
  27.                                       { STX - Start Of Text              }
  28.   kb_AltB                = $3000;     { ALT B                            }
  29.  
  30.   kb_CC                  = $2E63;     { c                                }
  31.   kb_C                   = $2E43;     { C                                }
  32.   kb_CtrlC               = $2E03;     { ^C                               }
  33.                                       { ETX - End Of Text                }
  34.   kb_AltC                = $2E00;     { ALT C                            }
  35.  
  36.   kb_DD                  = $2064;     { d                                }
  37.   kb_D                   = $2044;     { D                                }
  38.   kb_CtrlD               = $2004;     { ^D                               }
  39.                                       { EOT - End Of Transmission        }
  40.   kb_AltD                = $2000;     { ALT D                            }
  41.  
  42.   kb_EE                  = $1265;     { e                                }
  43.   kb_E                   = $1245;     { E                                }
  44.   kb_CtrlE               = $1205;     { ^E                               }
  45.                                       { ENQ - Enquire                    }
  46.   kb_AltE                = $1200;     { ALT E                            }
  47.  
  48.   kb_FF                  = $2166;     { f                                }
  49.   kb_F                   = $2146;     { F                                }
  50.   kb_CtrlF               = $2106;     { ^F                               }
  51.                                       { ACK - Acknowledge                }
  52.   kb_AltF                = $2100;     { ALT F                            }
  53.  
  54.   kb_GG                  = $2267;     { g                                }
  55.   kb_G                   = $2247;     { G                                }
  56.   kb_CtrlG               = $2207;     { ^G                               }
  57.                                       { BEL - Bell                       }
  58.   kb_AltG                = $2200;     { ALT G                            }
  59.  
  60.   kb_HH                  = $2368;     { h                                }
  61.   kb_H                   = $2348;     { H                                }
  62.   kb_CtrlH               = $2308;     { ^H                               }
  63.                                       { BS - BackSpace                   }
  64.   kb_AltH                = $2300;     { ALT H                            }
  65.  
  66.   kb_II                  = $1769;     { i                                }
  67.   kb_I                   = $1749;     { I                                }
  68.   kb_CtrlI               = $1709;     { ^I                               }
  69.                                       { HT - Horizontal Tab              }
  70.   kb_AltI                = $1700;     { ALT I                            }
  71.  
  72.   kb_JJ                  = $246A;     { j                                }
  73.   kb_J                   = $244A;     { J                                }
  74.   kb_CtrlJ               = $240A;     { ^J                               }
  75.                                       { LF - Line Feed                   }
  76.   kb_AltJ                = $2400;     { ALT J                            }
  77.  
  78.   kb_KK                  = $256B;     { k                                }
  79.   kb_K                   = $254B;     { K                                }
  80.   kb_CtrlK               = $250B;     { ^K                               }
  81.                                       { VT - Vertical Tab                }
  82.   kb_AltK                = $2500;     { ALT K                            }
  83.  
  84.   kb_LL                  = $266C;     { l                                }
  85.   kb_L                   = $264C;     { L                                }
  86.   kb_CtrlL               = $260C;     { ^L                               }
  87.                                       { FF - Form Feed (new page)        }
  88.   kb_AltL                = $2600;     { ALT L                            }
  89.  
  90.   kb_MM                  = $326D;     { m                                }
  91.   kb_M                   = $324D;     { M                                }
  92.   kb_CtrlM               = $320D;     { ^M                               }
  93.                                       { CR - Carriage Return             }
  94.   kb_AltM                = $3200;     { ALT M                            }
  95.  
  96.   kb_NN                  = $316E;     { n                                }
  97.   kb_N                   = $314E;     { N                                }
  98.   kb_CtrlN               = $310E;     { ^N                               }
  99.                                       { SO - Shift Out (numbers)         }
  100.   kb_AltN                = $3100;     { ALT N                            }
  101.  
  102.   kb_OO                  = $186F;     { o                                }
  103.   kb_O                   = $184F;     { O                                }
  104.   kb_CtrlO               = $180F;     { ^O                               }
  105.                                       { SI - Shift In (letters)          }
  106.   kb_AltO                = $1800;     { ALT O                            }
  107.  
  108.   kb_PP                  = $1970;     { p                                }
  109.   kb_P                   = $1950;     { P                                }
  110.   kb_CtrlP               = $1910;     { ^P                               }
  111.                                       { DEL - Delete                     }
  112.   kb_AltP                = $1900;     { ALT P                            }
  113.  
  114.   kb_QQ                  = $1071;     { q                                }
  115.   kb_Q                   = $1051;     { Q                                }
  116.   kb_CtrlQ               = $1011;     { ^Q                               }
  117.                                       { DC1 - Device Control 1           }
  118.   kb_AltQ                = $1000;     { ALT Q                            }
  119.  
  120.   kb_RR                  = $1372;     { r                                }
  121.   kb_R                   = $1352;     { R                                }
  122.   kb_CtrlR               = $1312;     { ^R                               }
  123.                                       { DC2 - Device Control 2           }
  124.   kb_AltR                = $1300;     { ALT R                            }
  125.  
  126.   kb_SS                  = $1F73;     { s                                }
  127.   kb_S                   = $1F53;     { S                                }
  128.   kb_CtrlS               = $1F13;     { ^S                               }
  129.                                       { DC3 - Device Control 3           }
  130.   kb_AltS                = $1F00;     { ALT S                            }
  131.  
  132.   kb_TT                  = $1474;     { t                                }
  133.   kb_T                   = $1454;     { T                                }
  134.   kb_CtrlT               = $1414;     { ^T                               }
  135.                                       { DC4 - Device Control 4           }
  136.   kb_AltT                = $1400;     { ALT T                            }
  137.  
  138.   kb_UU                  = $1675;     { u                                }
  139.   kb_U                   = $1655;     { U                                }
  140.   kb_CtrlU               = $1615;     { ^U                               }
  141.                                       { NAK - Negative Acknowlegde       }
  142.   kb_AltU                = $1600;     { ALT U                            }
  143.  
  144.   kb_VV                  = $2F76;     { v                                }
  145.   kb_V                   = $2F56;     { V                                }
  146.   kb_CtrlV               = $2F16;     { ^V                               }
  147.                                       { SYN - Syncronize                 }
  148.   kb_AltV                = $2F00;     { ALT V                            }
  149.  
  150.   kb_WW                  = $1177;     { w                                }
  151.   kb_W                   = $1157;     { W                                }
  152.   kb_CtrlW               = $1117;     { ^W                               }
  153.                                       { ETB - End of Text Block          }
  154.   kb_AltW                = $1100;     { ALT W                            }
  155.  
  156.   kb_XX                  = $2D78;     { x                                }
  157.   kb_X                   = $2D58;     { X                                }
  158.   kb_CtrlX               = $2D18;     { ^X -                             }
  159.                                       { CAN - Cancel                     }
  160.   kb_AltX                = $2D00;     { ALT X                            }
  161.  
  162.   kb_YY                  = $1579;     { y                                }
  163.   kb_Y                   = $1559;     { Y                                }
  164.   kb_CtrlY               = $1519;     { ^Y                               }
  165.                                       { EM - End of Medium               }
  166.   kb_AltY                = $1500;     { ALT Y                            }
  167.  
  168.   kb_ZZ                  = $2C7A;     { z                                }
  169.   kb_Z                   = $2C5A;     { Z                                }
  170.   kb_CtrlZ               = $2C1A;     { ^Z                               }
  171.                                       { SUB - Substitute                 }
  172.   kb_AltZ                = $2C00;     { ALT Z                            }
  173.  
  174. { numbers ······························································ }
  175.  
  176.   kb_1                   = $0231;     { 1                                }
  177.   kb_Pad1                = $4F31;     { SHIFT 1      number pad          }
  178.   kb_Alt1                = $7800;     { ALT 1                            }
  179.  
  180.   kb_2                   = $0332;     { 2                                }
  181.   kb_Pad2                = $5032;     { SHIFT 2      number pad          }
  182.   kb_Alt2                = $7900;     { ALT 2                            }
  183.   kb_Ctrl2               = $0300;     { ^1 (NUL)                         }
  184.  
  185.   kb_3                   = $0433;     { 3                                }
  186.   kb_Pad3                = $5133;     { SHIFT 3      number pad          }
  187.   kb_Alt3                = $7A00;     { ALT 3                            }
  188.  
  189.   kb_4                   = $0534;     { 4                                }
  190.   kb_Pad4                = $4B34;     { SHIFT 4      number pad          }
  191.   kb_Alt4                = $7B00;     { ALT 4                            }
  192.  
  193.   kb_5                   = $0635;     { 5                                }
  194.   kb_Pad5                = $4C35;     { SHIFT 5      number pad          }
  195.   kb_Alt5                = $7C00;     { ALT 5                            }
  196.  
  197.   kb_6                   = $0736;     { 6                                }
  198.   kb_Pad6                = $4D36;     { SHIFT 6      number pad          }
  199.   kb_Ctrl6               = $071E;     { ^6 (RS)                          }
  200.   kb_Alt6                = $7D00;     { ALT 6                            }
  201.  
  202.   kb_7                   = $0837;     { 7                                }
  203.   kb_Pad7                = $4737;     { SHIFT 7      number pad          }
  204.   kb_Alt7                = $7E00;     { ALT 7                            }
  205.  
  206.   kb_8                   = $0938;     { 8                                }
  207.   kb_Pad8                = $4838;     { SHIFT 8      number pad          }
  208.   kb_Alt8                = $7F00;     { ALT 8                            }
  209.  
  210.   kb_9                   = $0A39;     { 9                                }
  211.   kb_Pad9                = $4939;     { SHIFT 9      number pad          }
  212.   kb_Alt9                = $8000;     { ALT 9                            }
  213.  
  214.   kb_0                   = $0B30;     { 0                                }
  215.   kb_Pad0                = $5230;     { SHIFT 0      number pad          }
  216.   kb_Alt0                = $8100;     { ALT 0                            }
  217.  
  218. { etc: characters ······················································ }
  219.  
  220.   kb_Less                = $333C;     { <                                }
  221.   kb_Great               = $343E;     { >                                }
  222.  
  223.   kb_Minus               = $352D;     { -                                }
  224.   kb_GrayMinus           = $4A2D;     { -                                }
  225.   kb_CtrlMinus           = $0C1F;     { ^-                               }
  226.   kb_AltMinus            = $8200;     { ALT -                            }
  227.   kb_ShiftGrayMinus      = $4A2D;     { SHIFT -                          }
  228.  
  229.   kb_Plus                = $1A2B;     { +                                }
  230.   kb_GrayPlus            = $4E2B;     { +                                }
  231.   kb_WhitePlus           = $0D2B;     { +                                }
  232.   kb_ShiftGrayPlus       = $4E2B;     { SHIFT +                          }
  233.  
  234.   kb_Equal               = $0D3D;     { =                                }
  235.   kb_AltEqual            = $8300;     { ALT =                            }
  236.  
  237.   kb_Slash               = $352F;     { /                                }
  238.  
  239.   kb_BackSlash           = $2B5C;     { \                                }
  240.   kb_CtrlBackSlash       = $2B1C;     { ^\                               }
  241.                                       { FS - File Separator              }
  242.  
  243.   kb_OpenBracket         = $1A5B;     { [                                }
  244.   kb_CtrlOpenBracket     = $1A1B;     { ^[                               }
  245.                                       { ESC - Escape                     }
  246.  
  247.   kb_CloseBracket        = $1B5D;     { ]                                }
  248.   kb_CtrlCloseBracket    = $1B1D;     { ^]                               }
  249.                                       { GS - Group Separator             }
  250.  
  251.   kb_OpenParenthesis     = $0A28;     { (                                }
  252.  
  253.   kb_CloseParenthesis    = $0B29;     { )                                }
  254.  
  255.   kb_OpenBrace           = $1A7B;     { can't write it                   }
  256.  
  257.   kb_CloseBrace          = $1B7D;     { can't write it                   }
  258.  
  259.   kb_Apostrophe          = $2827;     { '                                }
  260.   kb_Grave               = $2960;     { `                                }
  261.  
  262.   kb_Quote               = $2822;     { "                                }
  263.  
  264.   kb_Tilde               = $297E;     { ~                                }
  265.  
  266.   kb_Cater               = $075E;     { ^                                }
  267.  
  268.   kb_Semicolon           = $273B;     { ;                                }
  269.  
  270.   kb_Comma               = $332C;     { ,                                }
  271.  
  272.   kb_Colon               = $273A;     { :                                }
  273.  
  274.   kb_Period              = $342E;     { .                                }
  275.   kb_ShiftPeriod         = $532E;     { SHIFT .      number pad          }
  276.  
  277.   kb_GrayAsterisk        = $372A;     { *                                }
  278.   kb_WhiteAsterisk       = $1A2A;     { *                                }
  279.  
  280.   kb_ExclamationPoint    = $0221;     { !                                }
  281.  
  282.   kb_QuestionMark        = $353F;     { ?                                }
  283.  
  284.   kb_NumberSign          = $0423;     { #                                }
  285.  
  286.   kb_Dollar              = $0524;     { $                                }
  287.  
  288.   kb_Percent             = $0625;     { %                                }
  289.  
  290.   kb_AmpersAnd           = $0826;     { &                                }
  291.  
  292.   kb_At                  = $0340;     { @                                }
  293.                                       { ^@  = 00h                        }
  294.                                       { NUL - Null Character             }
  295.   kb_UnitSeparator       = $0C5F;     { _                                }
  296.                                       { ^_  = 1Fh                        }
  297.                                       { US  - Unit Separator             }
  298.  
  299.   kb_Vertical            = $2B7C;     { |                                }
  300.  
  301.   kb_Space               = $3920;     { SPACE BAR                        }
  302.  
  303. { functions ···························································· }
  304.  
  305.   kb_F1                  = $3B00;     { F1                               }
  306.   kb_ShiftF1             = $5400;     { SHIFT F1                         }
  307.   kb_CtrlF1              = $5E00;     { ^F1                              }
  308.   kb_AltF1               = $6800;     { ALT F1                           }
  309.  
  310.   kb_F2                  = $3C00;     { F2                               }
  311.   kb_ShiftF2             = $5500;     { SHIFT F2                         }
  312.   kb_CtrlF2              = $5F00;     { ^F2                              }
  313.   kb_AltF2               = $6900;     { ALT F2                           }
  314.  
  315.   kb_F3                  = $3D00;     { F3                               }
  316.   kb_ShiftF3             = $5600;     { SHIFT F3                         }
  317.   kb_CtrlF3              = $6000;     { ^F3                              }
  318.   kb_AltF3               = $6A00;     { ALT F3                           }
  319.  
  320.   kb_F4                  = $3E00;     { F4                               }
  321.   kb_ShiftF4             = $5700;     { SHIFT F4                         }
  322.   kb_CtrlF4              = $6100;     { ^F4                              }
  323.   kb_AltF4               = $6B00;     { ALT F4                           }
  324.  
  325.   kb_F5                  = $3F00;     { F5                               }
  326.   kb_ShiftF5             = $5800;     { SHIFT F5                         }
  327.   kb_CtrlF5              = $6200;     { ^F5                              }
  328.   kb_AltF5               = $6C00;     { ALT F5                           }
  329.  
  330.   kb_F6                  = $4000;     { F6                               }
  331.   kb_ShiftF6             = $5900;     { SHIFT F6                         }
  332.   kb_CtrlF6              = $6300;     { ^F6                              }
  333.   kb_AltF6               = $6D00;     { ALT F6                           }
  334.  
  335.   kb_F7                  = $4100;     { F7                               }
  336.   kb_ShiftF7             = $5A00;     { SHIFT F7                         }
  337.   kb_CtrlF7              = $6400;     { ^F7                              }
  338.   kb_AltF7               = $6E00;     { ALT F7                           }
  339.  
  340.   kb_F8                  = $4200;     { F8                               }
  341.   kb_ShiftF8             = $5B00;     { SHIFT F8                         }
  342.   kb_CtrlF8              = $6500;     { ^F8                              }
  343.   kb_AltF8               = $6F00;     { ALT F8                           }
  344.  
  345.   kb_F9                  = $4300;     { F9                               }
  346.   kb_ShiftF9             = $5C00;     { SHIFT F9                         }
  347.   kb_CtrlF9              = $6600;     { ^F9                              }
  348.   kb_AltF9               = $7000;     { ALT F9                           }
  349.  
  350.   kb_F10                 = $4400;     { F10                              }
  351.   kb_ShiftF10            = $5D00;     { SHIFT F10                        }
  352.   kb_CtrlF10             = $6700;     { ^F10                             }
  353.   kb_AltF10              = $7100;     { ALT F1\0                         }
  354.  
  355. { cursors ······························································ }
  356.  
  357.   kb_Up                  = $4800;     { UP                               }
  358.  
  359.   kb_Down                = $5000;     { DOWN                             }
  360.  
  361.   kb_Left                = $4B00;     { LEFT                             }
  362.   kb_CtrlLeft            = $7300;     { ^LEFT                            }
  363.  
  364.   kb_Right               = $4D00;     { RIGHT                            }
  365.   kb_CtrlRight           = $7400;     { ^RIGHT                           }
  366.  
  367.   kb_Home                = $4700;     { HOME                             }
  368.   kb_CtrlHome            = $7700;     { ^HOME                            }
  369.  
  370.   kb_End                 = $4F00;     { END                              }
  371.   kb_CtrlEnd             = $7500;     { ^END                             }
  372.  
  373.   kb_PgUp                = $4900;     { PG UP                            }
  374.   kb_CtrlPgUp            = $8400;     { ^PG UP                           }
  375.  
  376.   kb_PgDown              = $5100;     { PG DN                            }
  377.   kb_CtrlPgDown          = $7600;     { ^PG DN                           }
  378.  
  379. { etc: keys ···························································· }
  380.  
  381.   kb_Esc                 = $011B;     { ESC                              }
  382.  
  383.   kb_Enter               = $1C0D;     { RETURN                           }
  384.   kb_CtrlEnter           = $1C0A;     { ^ENTER                           }
  385.                                       { LF - Line Feed                   }
  386.  
  387.   kb_BackSpace           = $0E08;     { BACKSPACE                        }
  388.   kb_CtrlBackspace       = $0E7F;     { ^BACKSPACE                       }
  389.                                       { DEL - Delete                     }
  390.  
  391.   kb_Tab                 = $0F09;     { TAB                              }
  392.   kb_Shift_Tab           = $0F00;     { SHIFT TAB                        }
  393.  
  394.   kb_Ins                 = $5200;     { INSERT                           }
  395.  
  396.   kb_Del                 = $5300;     { DELETE                           }
  397.  
  398.   kb_45                  = $565C;     { Key 45                       [2] }
  399.   kb_Shift45             = $567C;     { SHIFT KEY 45                 [2] }
  400.  
  401.   kb_CtrlPrtSc           = $7200;     { ^PRTSC                       [2] }
  402.  
  403.   kb_CtrlBreak           = $0000;     { ^BREAK                       [2] }
  404.  
  405.  
  406.  
  407. { footnotes ······························································
  408.  
  409.   [1] All key codes refers to Interrupt 16h Services 0 and 1,
  410.       the "Standard Function", that works with all keyboards types.
  411.  
  412.   [2] These key codes are only availlable in the 101/102-key keyboard,
  413.       the current IBM standard ("Enhanced") keyboard.
  414.  
  415. ··········································································
  416.  
  417. INT 16h,  00h (0)        Keyboard Read                                   all
  418.  
  419.     Returns the next character in the keyboard buffer; if no character is
  420.     available, this service waits until one is available.
  421.  
  422.        On entry:      AH         00h
  423.  
  424.        Returns:       AL         ASCII character code
  425.                       AH         Scan code
  426.  
  427.   ──────────────────────────────────────────────────────────────────────────
  428.  
  429.        Notes:         The scan codes are the numbers representing the
  430.                       location of the key on the keyboard. As new keys
  431.                       have been added and the keyboard layout rearranged,
  432.                       this numbering scheme has not been consistent with
  433.                       its original purpose.
  434.  
  435.                       If the character is a special character, then AL
  436.                       will be 0 and the value in AH will be the extended
  437.                       scan code for the key.
  438.  
  439.                       Use the scan codes to differentiate between keys
  440.                       representing the same ASCII code, such as the plus
  441.                       key across the top of the keyboard and the gray plus
  442.                       key.
  443.  
  444.                       After the character has been removed from the
  445.                       keyboard buffer, the keyboard buffer start pointer
  446.                       (at 0:041Ah) is increased by 2. If the start pointer
  447.                       is beyond the end of the buffer, the start pointer
  448.                       is reset to the start of the keyboard buffer.
  449.  
  450.                       If no character is available at the keyboard, then
  451.                       the AT, XT-286, and PC Convertible issue an INT 15h,
  452.                       Service 90h (Device Busy), for the keyboard,
  453.                       informing the operating system that there is a
  454.                       keyboard loop taking place and thereby allowing the
  455.                       operating system to perform another task.
  456.  
  457.                       After every character is typed, the AT, XT-286, and
  458.                       PC Convertible issue an INT 15h, Service 91h
  459.                       (Interrupt Complete). This allows the operating
  460.                       system to switch back to a task that is waiting for
  461.                       a character at the keyboard.
  462.  
  463.                       See Service 10h for an equivalent service that
  464.                       supports the enhanced (101/102-key) keyboard.
  465.  
  466. ··········································································
  467.  
  468. INT 16h,  01h (1)        Keyboard Status                                 all
  469.     Checks to see if a character is available in the buffer.
  470.  
  471.        On entry:      AH         01h
  472.  
  473.        Returns:       Zero       0, if character is available
  474.                                  1, if character is not available
  475.                       AL         ASCII character code (if character is
  476.                                  available)
  477.                       AH         Scan code (if character is available)
  478.  
  479.   ──────────────────────────────────────────────────────────────────────────
  480.  
  481.        Notes:         If a character is available, the Zero Flag is
  482.                       cleared and AX contains the ASCII value in AL and
  483.                       the scan code in AH. The character is not removed
  484.                       from the buffer. Use Service 00h to remove the
  485.                       character from the buffer. See Service 00h for a
  486.                       complete description of the meaning of AX if a
  487.                       character is available.
  488.  
  489.                       This service is excellent for clearing the keyboard
  490.                       or allowing a program to be interruptable by a
  491.                       specific key sequence.
  492.  
  493.                       See Service 11h for an equivalent service that
  494.                       supports the enhanced (101/102-key) keyboard.
  495.  
  496. ········································································ }
  497.  
  498.  
  499.  
  500. IMPLEMENTATION
  501.  
  502.  
  503. END. { HTkb.PAS }
  504.  
  505.  
  506.